"""
文件名称：example_fs_basic_operation_posix.py
作者：Lionel.Zhang
创建时间：2025 - 11 - 05
最后修改时间：2025 - 11 - 05
功能描述：文件系统示例程序
"""
'''
@说明：在 /usr 目录下创建 test.txt 文件，演示文件的写入、多种方式读取（指定长度、按行、读取所有行）操作
@注意：/usr 目录需确保有写入权限（Quecpython 设备中 /usr 通常为可写分区）
'''

# 1. 打开/创建文件：路径为 /usr/test.txt，打开模式为 w+
# w+ 模式说明：
# - 可读写权限
# - 若文件不存在则自动创建
# - 若文件已存在则清空原有内容
f = open("/usr/test.txt", "w+")

# 2. 写入内容到文件
# write() 方法返回本次写入的字符数，累加两次写入的总长度
i = f.write("hello world\n")  # 写入第一行，末尾\n表示换行符
i = i + f.write("hello quecpython\n")  # 写入第二行，累加字符数到变量i

# 3. 打印总写入长度（i 存储两次写入的字符总数）
print("write length: {}".format(i))

# 4. 移动文件指针到文件开头（关键步骤）
# 因为写入操作后，文件指针停留在文件末尾，直接读取会读不到内容
# seek(0) 表示将指针移动到文件第0个字节位置（即开头）
f.seek(0)

# 5. 按指定长度读取：读取前10个字符
# read(n) 表示读取最多n个字符，若不足n个则读取剩余所有字符
str = f.read(10)
print("read content (first 10 chars): {}".format(str))

# 6. 再次移动指针到开头（上一次读取后指针已移动，需重新定位到开头）
f.seek(0)

# 7. 按行读取：读取文件第一行内容
# readline() 表示读取一行内容，遇到换行符 \n 停止，返回值包含换行符
str = f.readline()
print("read line content (first line): {}".format(str))

# 8. 再次移动指针到开头（确保读取所有行时从文件起始位置开始）
f.seek(0)

# 9. 读取所有行：一次性读取文件所有内容，按行分割为列表
# readlines() 返回值为列表，每个元素对应文件中的一行（包含每行末尾的换行符）
str = f.readlines()
print("read all lines content (list format): {}".format(str))

# 10. 关闭文件（必须步骤）
# 关闭文件以释放系统文件资源，避免资源占用或数据写入不完整
f.close()

# 11. 打印测试结束提示
print("test end: 文件创建、写入、读取操作完成")